package com.yuexun.dhdoctor.widget;

import android.content.Context;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.yuexun.dhdoctor.R;
import com.yuexun.dhdoctor.base.bean.model.HelpFileData;
import com.yuexun.dhdoctor.base.bean.model.HelpFileEntity;
import com.yuexun.dhdoctor.widget.model.CreateCheckBoxView;
import com.yuexun.dhdoctor.widget.model.CreateDateTimeView;
import com.yuexun.dhdoctor.widget.model.CreateDictionaryView;
import com.yuexun.dhdoctor.widget.model.CreateRadioView;
import com.yuexun.dhdoctor.widget.model.CreateSpinnerView;
import com.yuexun.dhdoctor.widget.model.CreateTxtView;
import com.yuexun.dhdoctor.widget.model.CreateTxtView_Optional;

import org.kymjs.kjframe.ui.ViewInject;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by chenss on 2017/7/28 0028.
 */

public class ModelAddViewNew {

    Context context;
    ArrayList<HelpFileData> dtlList;//配置详情列表
    LinearLayout modelView;

    //是否回填数据
    private boolean isBackfill = false;
    List<HelpFileData> alreadyDtlList;

    public ModelAddViewNew(Context context) {
        this.context = context;
    }

    public ModelAddViewNew(Context context, ArrayList<HelpFileData> dtlList) {
        this.context = context;
        this.dtlList = dtlList;
    }

    public boolean isEmpty() {
        for (HelpFileData data : dtlList) {
            if (data.getShowType().equals("1")) {
                if (data.getDtlValue() == null || data.getDtlValue().isEmpty()) {
                    ViewInject.toast("请输入" + data.getDtlName());
                    return true;
                }
            } else if (data.getShowType().equals("2")) {
                if (data.getList() == null || data.getList().size() == 0) {
                    ViewInject.toast("请选择" + data.getDtlName());
                    return true;
                } else {
                    if (data.getList().get(0).getDtlValue().isEmpty()) {
                        ViewInject.toast("请选择" + data.getDtlName());
                        return true;
                    } else {
                        if (data.getList().get(0).getShowType().equals("2_5") ||
                                data.getList().get(0).getShowType().equals("2_6") ||
                                data.getList().get(0).getShowType().equals("2_10") ||
                                data.getList().get(0).getShowType().equals("2_11")) {
                            if (data.getList().get(0).getDtlValue().contains("--")) {
                                String time = data.getList().get(0).getDtlValue();
                                String[] times = time.split("\\-\\-");
                                if (times.length != 2) {
                                    ViewInject.toast("请正确选择时间");
                                    return true;
                                } else {
                                    if (times[0].trim().isEmpty() || times[1].trim().isEmpty()) {
                                        ViewInject.toast("请正确选择时间");
                                        return true;
                                    }
                                }
                            }
                        }
                    }
                }
            } else if (data.getShowType().equals("3")) {
                if (data.getList() == null || data.getList().size() == 0) {
                    ViewInject.toast("请选择" + data.getDtlName());
                    return true;
                } else {
                    for (HelpFileData data1 : data.getList()) {
                        if (data1.getDtlValue().trim().isEmpty()) {
                            ViewInject.toast("请选择" + data.getDtlName());
                            return true;
                        } else {
                            if (data1.getDtlValue().contains("--")) {
                                String time = data1.getDtlValue();
                                String[] times = time.split("\\-\\-");
                                if (times.length != 2) {
                                    ViewInject.toast("请正确选择时间");
                                    return true;
                                } else {
                                    if (times[0].trim().isEmpty() || times[1].trim().isEmpty()) {
                                        ViewInject.toast("请正确选择时间");
                                        return true;
                                    }
                                }
                            }
                        }
                    }
                }
            } else if (data.getShowType().equals("4")) {
                if (data.getList() == null || data.getList().size() == 0) {
                    ViewInject.toast("请选择" + data.getDtlName());
                    return true;
                }
            } else if (data.getShowType().equals("5")) {
                if (data.getList() == null || data.getList().size() == 0) {
                    ViewInject.toast("请选择" + data.getDtlName());
                    return true;
                }
            } else if (data.getShowType().equals("6")) {
                if (data.getDtlValue() == null || data.getDtlValue().isEmpty()) {
                    ViewInject.toast("请输入" + data.getDtlName());
                    return true;
                }
            }
        }
        return false;
    }

    public void showView(HelpFileEntity helpFileEntity, LinearLayout modelView) {
        this.modelView = modelView;
        if (helpFileEntity.getDtlList() != null && helpFileEntity.getDtlList().size() > 0) {
            addView(helpFileEntity.getDtlList());
        } else {
            modelView.setVisibility(View.GONE);
        }
    }

    //回填数据
    public void showBackfill(List<HelpFileData> fileData, List<HelpFileData> alreadyDtlList, LinearLayout modelView) {
        this.modelView = modelView;
        this.alreadyDtlList = alreadyDtlList;
        isBackfill = true;
        if (fileData != null && fileData.size() > 0) {
            for(int i=0; i<fileData.size(); i++){
                alreadyDtlList.get(i).setDtlId(fileData.get(i).getDtlId());
                alreadyDtlList.get(i).setShowType(fileData.get(i).getShowType());
            }
            addView(fileData);
        } else {
            modelView.setVisibility(View.GONE);
        }
    }

    public void addView(List<HelpFileData> fileData) {
        for (int i = 0; i < fileData.size(); i++) {
            if (fileData.get(i).getShowType().equals("99_99")) {
                //99_99签字区域
//                modelView.addView(createTxtView("1", fileData.get(i)));
            } else {
                String showType = fileData.get(i).getShowType();
                String[] typeData = showType.split("\\_");
                //1 文本框 2单选  3多选  4多级下拉  5时间   6数据字典  7文本选填 8多选选填 9时间选填
                if (typeData[0].equals("1")) {
                    View view = new CreateTxtView(context, dtlList, alreadyDtlList).createTxtView(typeData[1], fileData.get(i), isBackfill);
                    modelView.addView(view);
                } else if (typeData[0].equals("2")) {
                    Radio(typeData[1], fileData.get(i));
                } else if (typeData[0].equals("3") || typeData[0].equals("8")) {
                    CheckBox(typeData, fileData.get(i));
                } else if (typeData[0].equals("4")) {
                    Spinner(typeData[1], fileData.get(i));
                } else if (typeData[0].equals("5") || typeData[0].equals("9")) {
                    DateTime(typeData, fileData.get(i));
                } else if (typeData[0].equals("6")) {
                    View view = new CreateDictionaryView(context, dtlList).createDictionaryView(typeData[1], fileData.get(i));
                    modelView.addView(view);
                } else if (typeData[0].equals("7")) {
                    View view = new CreateTxtView_Optional(context, dtlList, alreadyDtlList, isBackfill).createTxtView(typeData[1], fileData.get(i));
                    modelView.addView(view);
                }
            }
        }
        if (dtlList.size() > 0) {
            modelView.setVisibility(View.VISIBLE);
        } else {
            modelView.setVisibility(View.GONE);
        }
    }

    private void Radio(String num, HelpFileData fileData) {
        //1 单选  2 单选+后文本框  3 单选+后年月日  4 单选+后年月日时分  5 单选+后范围（年月日）  6 单选+后范围（年月日时分）
        //7  单选+前文本框  8 单选+前年月日  9 单选+前年月日时分  10 单选+前范围（年月日） 11 单选+前范围（年月日时分）
        View view = null;
        if (num.equals("1")) {
            view = new CreateRadioView(context, dtlList, alreadyDtlList, isBackfill).createRadioView(fileData);
        } else if (num.equals("2") || num.equals("7")) {
            view = new CreateRadioView(context, dtlList, alreadyDtlList, isBackfill).createRadio2View(num, fileData);
        } else if (num.equals("3") || num.equals("4") || num.equals("8") || num.equals("9")) {
            view = new CreateRadioView(context, dtlList, alreadyDtlList, isBackfill).createRadio3View(num, fileData);
        } else if (num.equals("5") || num.equals("6") || num.equals("10") || num.equals("11")) {
            view = new CreateRadioView(context, dtlList, alreadyDtlList, isBackfill).createRadio4View(num, fileData);
        }
        modelView.addView(view);
    }

    private void CheckBox(String[] typeData, HelpFileData fileData) {
        //1 多选  2 多选+后文本框  3 多选+后年月日  4 多选+后年月日时分  5 多选+后范围（年月日）  6 多选+后范围（年月日时分）
        //7 多选+先文本框  8 多选+先年月日  9 多选+先年月日时分  10 多选+先范围（年月日） 11 多选+先范围（年月日时分）
        View view = null;
        if (typeData[1].equals("1")) {
            view = new CreateCheckBoxView(context, dtlList, alreadyDtlList, isBackfill).createCheckboxView(typeData, fileData, false);
        } else if (typeData[1].equals("2")) {
            view = new CreateCheckBoxView(context, dtlList, alreadyDtlList, isBackfill).createCheckboxView(typeData, fileData, true);
        } else if (typeData[1].equals("3") || typeData[1].equals("4") || typeData[1].equals("8") || typeData[1].equals("9")) {
            view = new CreateCheckBoxView(context, dtlList, alreadyDtlList, isBackfill).createCheckbox2View(typeData, fileData);
        } else if (typeData[1].equals("5") || typeData[1].equals("6") || typeData[1].equals("10") || typeData[1].equals("11")) {
            view = new CreateCheckBoxView(context, dtlList, alreadyDtlList, isBackfill).createCheckbox3View(typeData, fileData);
        } else if (typeData[1].equals("7")) {
            view = new CreateCheckBoxView(context, dtlList, alreadyDtlList, isBackfill).createCheckboxView(typeData, fileData, true);
        }
        modelView.addView(view);
    }

    private void Spinner(String num, HelpFileData fileData) {
        //1 一级下拉 2二级下拉
        View view = null;
        if (num.equals("1")) {
            view = new CreateSpinnerView(context, dtlList, alreadyDtlList, isBackfill).createSpinnerView(fileData);
        } else if (num.equals("2")) {
            view = new CreateSpinnerView(context, dtlList, alreadyDtlList, isBackfill).createSpinner2View(fileData);
        }
        modelView.addView(view);
    }

    private void DateTime(String[] typeData, HelpFileData fileData) {
        //1 年月日  2 年月日时分  3 时间范围(年)  4 时间范围(年月)  5 时间范围(年月日)  6 时间范围(年月日时分)
        View view = null;
        if (typeData[1].equals("1")) {
            view = new CreateDateTimeView(context, dtlList, alreadyDtlList, isBackfill).createDateTimeView(typeData, fileData, "3");
        } else if (typeData[1].equals("2")) {
            view = new CreateDateTimeView(context, dtlList, alreadyDtlList, isBackfill).createDateTimeView(typeData, fileData, "4");
        } else if (typeData[1].equals("3") || typeData[1].equals("4") || typeData[1].equals("5") || typeData[1].equals("6")) {
            view = new CreateDateTimeView(context, dtlList, alreadyDtlList, isBackfill).createDateTime2View(typeData, fileData);
        }
        modelView.addView(view);
    }

    /**
     * 方法描述：详情界面显示
     *
     * @param fileData
     * @return
     */
    public View createTxtView(final HelpFileData fileData, String title, String content) {
        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        View view = LayoutInflater.from(context).inflate(R.layout.item_model_layout, null);//也可以从XML中加载布局

        view.setLayoutParams(lp);//设置布局参数

        TextView txt_title = (TextView) view.findViewById(R.id.txt_title);
        final TextView contentTxt = (TextView) view.findViewById(R.id.content_txt);

        if (fileData == null) {
            txt_title.setText(title);
            contentTxt.setText(content);
        } else {
            txt_title.setText(fileData.getDtlName());

            //1_1
            String type;
            if (fileData.getShowType().contains("_")) {
                type = fileData.getShowType().split("_")[0];
            } else {
                type = fileData.getShowType();
            }

            if (type.equals("0") || type.equals("1")) {
                contentTxt.setText(Html.fromHtml(fileData.getDtlValue()));
            } else if (type.equals("2")) {
                if (fileData.getList() != null && fileData.getList().size() > 0) {
                    contentTxt.setText(fileData.getList().get(0).getDtlValue());
                }
            } else if (type.equals("3") || type.equals("8")) {
                String s = "";
                for (HelpFileData data : fileData.getList()) {
                    if (s != null && !s.isEmpty()) {
                        s = s + "/" + data.getDtlValue();
                    } else {
                        s = data.getDtlValue();
                    }
                }
                contentTxt.setText(s);
            } else if (type.equals("4")) {
                if (fileData.getList().get(0).getList() != null && fileData.getList().get(0).getList().size() > 0 &&
                        fileData.getList().get(0).getList().get(0).getDtlValue() != null &&
                        !fileData.getList().get(0).getList().get(0).getDtlValue().isEmpty()) {
                    contentTxt.setText(fileData.getList().get(0).getDtlValue() +
                            "  " + fileData.getList().get(0).getList().get(0).getDtlValue());
                } else {
                    if (fileData.getList().get(0).getDtlValue() != null) {
                        contentTxt.setText(fileData.getList().get(0).getDtlValue());
                    }
                }
            } else if (type.equals("5") || type.equals("9")) {
                contentTxt.setText(Html.fromHtml(fileData.getDtlValue()));
            } else if (type.equals("6")) {
                contentTxt.setText(Html.fromHtml(fileData.getDtlValue()));
            } else if (type.equals("7")) {
                contentTxt.setText(Html.fromHtml(fileData.getDtlValue()));
            }
        }
        return view;
    }
}
